I/O & Interrupt

입출력(input/output) & 인터럽트(interrupt)
입출력(Input/Output) 구성
컴퓨터는 사용자와 통신을 하기 위해서 외부 장치, 즉 메모리로 데이터와 명령어를 읽어 들일 입력 장치(input-device)와
계산결과를 사용자에게 표시해줄 출력 장치(output-device)를 갖추어야 한다.
Keyboard[Input]-Transmitter interface-INPR-AC-OUTR-Receiver interface-Printer[Output]

각 정보는 8bit/1code씩 직렬로 전송
INPR-AC-OUTR에서는 병렬로 연결

제어 플립플롭(FGO) flag bit
1- AC 병렬 전송 OUTR
0- Data[OUTR] transfer to Printer

제어 플립플롭(FGI) flag bit
0- Key in 8bit code shift to INPR
1- INPR 불변, INPR 병렬 전송 AC
컴퓨터구조 #13 마이크로 명령 - 입출력과 인터럽트
키보드의 입력 값이 시리얼 통신 인터페이스를 통해 INPR(INPutRegister)로 전달되고
해당 레지스터의 값이 차면 FGI의 플래그가 활성화(1)되어 AC로 전달된다.
(0일 때는 INPR가 채워지고, 1일 때는 INPR의 내용이 AC로 병렬 전달되는 동안 변경 불가능)
같은 방식으로 OUTR(OUTput Register)에  값이 전달되고 이를 프린터로 순차적으로 전달

AC(Accumulator): 계산장치로부터 읽어온 데이터나 누산기에 적재할 데이터를 일시저장하는 레지스터
AC:=AC+메모리로부터 읽어온 값
인터럽트(interrupt)
컴퓨터 실행 속도 대비 외부 입력 장치와의 입출력 속도 차이가 크기 때문에 플래그를 사용해서 제어
플래그를 사용한 통신 방법을 프로그램 제어 전송(program controlled transfer)이라고 한다.
프로세스와 입출력장치와의 속도차이 때문에 매우 비능률적이다.

컴퓨터 실행 단위마다 플래그를 확인하면, 입출력 장치 실행 단위 내에서 수천번 플래그를 확인해야함 비효율적

인터럽트 인 에이블 플립플롭(interrupt enable flip-flop, IEN)
- 프로그램 제어 저송 대신에 외부 장치가 전송 준비가 되었을 때 컴퓨터에 알리는 방법에 활용되는 플립플롭
- 컴퓨터는 프로그램 실행 도중 플래그를 체크하지 않으며, 플래그가 세트되면 컴퓨터는 즉각 실행 중이던 프로그램을
  중지하고, 플래그의 세트 정보를 받아들여 입출력을 실행/입출력 실행 후 즉시 원프로그램으로 복귀(인터럽트)
R이 1로 세트되면 Interrupt cycle
R이 0이면 Instruction cycle을 시행